package com.example.loop;

/**
 * 目标：求奇数和
 */
public class ForTest3 {
    public static void main(String[] args) {
        System.out.println("1-10的奇数和是：" + sum(10));
        System.out.println("1-10的奇数和是：" + sum2(10));
        test1();
    }

    public static int sum(int n) {
        // 1、定义变量累加奇数
        int sum = 0;
        // 2、循环1-n的全部数字。
        for (int i = 1; i <= n; i++) {
            // i = 1 2 3 4 5 6 7 8 9 10
            // 3、判断当前数字是否是奇数
            if (i % 2 != 0) {
                // 4、如果是奇数，累加到sum中
                sum += i;
            }
        }
        // 5、返回累加结果
        return sum;
    }

    // 第二种方式 性能更好 因为没有if判断
    public static int sum2(int n) {
        // 1、定义变量累加奇数
        int sum = 0;
        // 2、循环1-n的全部数字。
        for (int i = 1; i <= n; i += 2) {
            // i = 1 3 5 7 9
            // 3、累加到sum中
            sum += i;
        }
        // 5、返回累加结果
        return sum;
    }

    // 求100-1000的水仙花数
    // 什么是水仙花数：水仙花数是一个三位数，它的各位数字立方和等于它本身。
    public static void test1() {
        for (int i = 100; i <= 1000; i++) {
            // 重点：求百位、十位、个位
            int c = (i / 100) % 10; // 百位
            int b = (i / 10) % 10; // 十位
            int a = i % 10; // 个位
            if (a * a * a + b * b * b + c * c * c == i) {
                //说明是水仙花数
                System.out.println(i);
            }
        }
    }
}
